perm filename S5X.F4[M11,LCS]2 blob
sn#407409 filedate 1979-01-03 generic text, type T, neo UTF8
00100 C ***** SUBROUTINES TO GO WITH S3X.F4 (RUNIT) *******
00200 C* MICRO, RMOVX, ALL, POINTR, RAND,PARAM 7/78
00300
00400 FUNCTION RMOVX(W,Y,Z)
00500 IF(W.EQ.0)W=.01
00600 IF(Y.EQ.0)Y=.01
00700 RMOVX=Y*((W/Y)**Z)
00800 END
00900
01000 FUNCTION ALL(JPT,IPTX)
01100 COMMON /VV/LIMIT,V(1)
01200 DIMENSION JPT(1)
01300 K=IPTX-1
01400 IF(K.GT.0)GO TO 2
01500 1 K=JPT(-K)
01600 IF(K)GO TO 1
01700 C FOR 'ALL' WITH RR,RD,DF. FOLLOWS UP ON POINTERS TO POINTERS!
01800 K=K-1
01900 2 ALL=PARAM(V(K+3),K)
02000 END
02100
02200 C***** THIS IS NOW A 'FAIL' ROUTINE IN SPRINT.FAI
02300 FUNCTION PARAM(X,K)
02400 COMMON J,L /P/P(1) /PL/IPL(1) /C/T,NWZZ,IT3,T6,NW,TDUR,A,
02500 1 T2,T4,BY,KODE,NPAR,LP,TBG,AC,NPA,BX,IDF,IPM,NM,PAR,PX2
02600 K=0
02700 C IF K IS NOT ZERO UPON RETURN, THEN WE'VE FOUND INFO IN OTHER PARAM.
02800 PARAM=X
02900 IF(X.GT.-9999.0)RETURN
03000 IF(X.EQ.-10000.0)RETURN
03100 K=-(X+9999.0)*100.+.1
03200 PARAM=P(K)
03300 C GET DATA FROM PARAM K
03400 IPM=IPL(K)
03500 IF(L.NE.2)RETURN
03600 C L=CALLING PARAM NUM., K=PARAM REFERRED TO.
03700 IF(K.EQ.2)PARAM=PX2
03800 C MUST USE 'UNPROCESSED' FORM OF P2 (I.E. NO 'TEMPO' CHANGES)
03900 END
04000
04100 C***** MICROTONES ********
04200 SUBROUTINE MICRO
04300 COMMON INUM,IPAR /P/P(1) /PL/IPL(2),IPL3
04400 C CALL SUBROUTINE FROM ANY PARAMETER WHERE THE CALLING PARAMETER
04500 C AND THE IMMEDITELY PRECEDING PARAMETER ARE UNUSED BY YOUR INSTR.
04600 C P3 CAN BE NOTES OR NUMBS.
04700
04800 X=P(3)
04900 IF(IPL3.EQ.1)GO TO 1
05000 CC X=IFIX(X)
05100 C FOR RAND NOTES TO LOCK ON NOTE NUMBERS.
05200 CC X=30.8677*2**(X/12)
05300 X=15.43385*2**(X/12)
05400 C X=FREQ. IN HZ. BASED ON NT # IN P3. NUM. ABOVE IS B, IE. LOWEST B -1 OCT.
05500 IPL3=1
05600 C THIS CAUSES FREQ. NUM TO PRINT INSTEAD OF LITERAL CHARACTERS.
05700
05800 1 Y=IFIX(P(IPAR-1))
05900 Z=IFIX(P(IPAR))
06000 C FIX NEEDED BECAUSE OF POSSIBLE NON-INTEGERS HERE.
06100 P(3)=X*2**(Y/Z)
06200 C IPAR (Z) IS THE CALLING PARAMETER. IPAR-1 (Y) THE PREVIOUS PARAM.
06300 C X HAS BASE FREQ.
06400 C THE NUMBER IN P(IPAR)=# OF DIVISIONS OF THE OCTAVE.
06500 C THE NUMBER IN P(IPAR-1)=CHROMATIC STEP IN THAT DIV.
06600 END
06700
06800 FUNCTION RAND(A,B)
06900 RAND=A+(B-A)*RAN(B)
07000 C RAN IS IN FORTRAN LIB.
07100 END